package com.tbit.main.service;


import com.tbit.main.pojo.AccountUser;
import com.tbit.main.pojo.MachineFault;

import java.util.List;
import java.util.Map;

/**
 * 故障
 *
 * @author Leon
 * 2019年11月16日 下午2:55:29
 */
public interface MachineFaultService {

    /**
     * 根据设备id查询
     *
     * @param machineId
     * @return
     */
    MachineFault getByMachineId(Integer machineId);

    /**
     * 根据设备 ids 查询
     * @param machineIds 设备 ids
     * @return 设备故障信息
     */
    List<MachineFault> getByMachineIds(List<Integer> machineIds);

    /**
     * 添加
     *
     * @param machineFault
     */
    void insert(MachineFault machineFault);

    /***
     * 更新
     * @param machineFault
     */
    void update(MachineFault machineFault);

    /**
     * 删除
     *
     * @param machineId
     */
    void del(Integer machineId);

    /**
     * 根据代理商id查询
     *
     * @param accountId
     * @return
     */
    List<MachineFault> getByAccountId(Integer accountId);

    /**
     * 根据代理商id查询
     *
     * @param accountIds
     * @return
     */
    List<MachineFault> getByAccountIds(List<Integer> accountIds);

    /**
     * 根据分区id查询
     *
     * @param regionId
     * @return
     */
    List<MachineFault> getByRegionId(List<Integer> regionId);

    /**
     * 根据设备id查询
     *
     * @param machineId
     * @return
     */
    String getImageByMachineId(Integer machineId);

    /**
     * 获取运营区域内的故障车辆数
     *
     * @return
     */
    List<Map<String, Object>> getGroupByAccountId();

    /**
     * 根据运营区域和来源
     *
     * @param accountId
     * @param from
     * @return
     */
    Integer getByAccountIdType(Integer accountId, Integer from);

    /**
     * 根据设备id查询
     *
     * @param list
     * @return
     */
    List<Integer> getExist(List<Integer> list, Integer from);

    /**
     * 查询区域故障车辆
     *
     * @param accountId
     * @return
     */
    List<MachineFault> getMachineFaultUser(Integer accountId, Integer machineId, List<Integer> machineIds);

    /**
     * 添加故障
     * @param machineFault 故障信息
     * @param accountUserToken 当前用户信息
     */
    void addMachineFault(MachineFault machineFault, AccountUser accountUserToken);

    /**
     * 清除故障状态
     *
     * @param machineIdList 车辆id集合
     */
    void batchClearMachineFaultById(List<Integer> machineIdList);
}
